package main

import (
	"fmt"
	"time"
)

func main() {
	for i := 0; i < 3; i++ {
		/* TODO[Q] 为什么注释掉后，打印的是3个3，而不是1个3  */
		i := i //若注释掉该行，则无法把局部变量i传入到另一个goruntine的匿名函数中，只会把最终退出for循环的值传给i
		go func() {
			fmt.Println(i)
		}()
		/*另一种取代方法，将i作为匿名函数的参数，也可以将每次循环i的值传给另一个goruntine
		go func(v int) {
			fmt.Println(v)
		}(i)
		*/
	}

	time.Sleep(time.Second)
}
